/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package OrchestrationLanguage.impl;

import OrchestrationLanguage.Argument;
import OrchestrationLanguage.Call;
import OrchestrationLanguage.Command;
import OrchestrationLanguage.Else;
import OrchestrationLanguage.ExternalServices;
import OrchestrationLanguage.If;
import OrchestrationLanguage.Import;
import OrchestrationLanguage.InternalProcess;
import OrchestrationLanguage.InternalServices;
import OrchestrationLanguage.Location;
import OrchestrationLanguage.Main;
import OrchestrationLanguage.Module;
import OrchestrationLanguage.Modules;
import OrchestrationLanguage.OrchestrationLanguageFactory;
import OrchestrationLanguage.OrchestrationLanguagePackage;
import OrchestrationLanguage.Parameter;
import OrchestrationLanguage.Sequence;
import OrchestrationLanguage.Structure;
import OrchestrationLanguage.Variable;
import OrchestrationLanguage.Variable_Assignment;
import OrchestrationLanguage.Variable_Declaration;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EFactoryImpl;

import org.eclipse.emf.ecore.plugin.EcorePlugin;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Factory</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class OrchestrationLanguageFactoryImpl extends EFactoryImpl implements OrchestrationLanguageFactory {
	/**
	 * Creates the default factory implementation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static OrchestrationLanguageFactory init() {
		try {
			OrchestrationLanguageFactory theOrchestrationLanguageFactory = (OrchestrationLanguageFactory)EPackage.Registry.INSTANCE.getEFactory("http://apc.utwente.nl/OrchestrationLanguage"); 
			if (theOrchestrationLanguageFactory != null) {
				return theOrchestrationLanguageFactory;
			}
		}
		catch (Exception exception) {
			EcorePlugin.INSTANCE.log(exception);
		}
		return new OrchestrationLanguageFactoryImpl();
	}

	/**
	 * Creates an instance of the factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public OrchestrationLanguageFactoryImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EObject create(EClass eClass) {
		switch (eClass.getClassifierID()) {
			case OrchestrationLanguagePackage.EXTERNAL_SERVICES: return createExternalServices();
			case OrchestrationLanguagePackage.INTERNAL_SERVICES: return createInternalServices();
			case OrchestrationLanguagePackage.MAIN: return createMain();
			case OrchestrationLanguagePackage.PROCESS: return createProcess();
			case OrchestrationLanguagePackage.VARIABLE_ASSIGNMENT: return createVariable_Assignment();
			case OrchestrationLanguagePackage.VARIABLE_DECLARATION: return createVariable_Declaration();
			case OrchestrationLanguagePackage.CALL: return createCall();
			case OrchestrationLanguagePackage.MODULE: return createModule();
			case OrchestrationLanguagePackage.IMPORT: return createImport();
			case OrchestrationLanguagePackage.VARIABLE: return createVariable();
			case OrchestrationLanguagePackage.IF: return createIf();
			case OrchestrationLanguagePackage.ELSE: return createElse();
			case OrchestrationLanguagePackage.ARGUMENT: return createArgument();
			case OrchestrationLanguagePackage.MODULES: return createModules();
			case OrchestrationLanguagePackage.INTERNAL_PROCESS: return createInternalProcess();
			default:
				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ExternalServices createExternalServices() {
		ExternalServicesImpl externalServices = new ExternalServicesImpl();
		return externalServices;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public InternalServices createInternalServices() {
		InternalServicesImpl internalServices = new InternalServicesImpl();
		return internalServices;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Main createMain() {
		MainImpl main = new MainImpl();
		return main;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public OrchestrationLanguage.Process createProcess() {
		ProcessImpl process = new ProcessImpl();
		return process;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Variable_Assignment createVariable_Assignment() {
		Variable_AssignmentImpl variable_Assignment = new Variable_AssignmentImpl();
		return variable_Assignment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Variable_Declaration createVariable_Declaration() {
		Variable_DeclarationImpl variable_Declaration = new Variable_DeclarationImpl();
		return variable_Declaration;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Call createCall() {
		CallImpl call = new CallImpl();
		return call;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Module createModule() {
		ModuleImpl module = new ModuleImpl();
		return module;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Import createImport() {
		ImportImpl import_ = new ImportImpl();
		return import_;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Variable createVariable() {
		VariableImpl variable = new VariableImpl();
		return variable;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public If createIf() {
		IfImpl if_ = new IfImpl();
		return if_;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Else createElse() {
		ElseImpl else_ = new ElseImpl();
		return else_;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Argument createArgument() {
		ArgumentImpl argument = new ArgumentImpl();
		return argument;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Modules createModules() {
		ModulesImpl modules = new ModulesImpl();
		return modules;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public InternalProcess createInternalProcess() {
		InternalProcessImpl internalProcess = new InternalProcessImpl();
		return internalProcess;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public OrchestrationLanguagePackage getOrchestrationLanguagePackage() {
		return (OrchestrationLanguagePackage)getEPackage();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @deprecated
	 * @generated
	 */
	@Deprecated
	public static OrchestrationLanguagePackage getPackage() {
		return OrchestrationLanguagePackage.eINSTANCE;
	}

} //OrchestrationLanguageFactoryImpl
